package com.ruoyi.web.controller.tool;

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtilTool {

    public static void main(String[] args) {
        System.out.println(numberSupplement("2020-1".split("-")[1],4));
    }




  public static String  numberSupplement(String number, int num){
          int lenNum=number.length();
          if (num<=lenNum){
              return  number;
          }else{
              StringBuffer stringBuffer=new StringBuffer();
              for (int i=1;i<=num-lenNum;i++){
                  stringBuffer.append("0");
              }
              stringBuffer.append(number);
              return  stringBuffer.toString();
          }
    }

    public static boolean isInteger(String str) {
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
        return pattern.matcher(str).matches();
    }

    public  String changeNumType(String pInStr) {
        char[] arr = pInStr.toCharArray();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            if ((arr[i] - '0' >= 0) && (arr[i] - '0' <= 9)) { // 判断为数字
                sb.append("<span style=\"font-size:21px;font-family:&#39;Times New Roman&#39;,&#39;serif&#39;;color:red\">" + arr[i] + "</span>");//两边都加上*
            } else sb.append(arr[i]);

        }
        return sb.toString().replace("</span><span style=\\\"font-size:21px;font-family:&#39;Times New Roman&#39;,&#39;serif&#39;;color:red\\\">","");//两个数字中间有** 替换掉
    }


    // 判断一个字符串是否含有数字
    public static boolean HasDigit(String content) {
        boolean flag = false;
        Pattern p = Pattern.compile(".*\\d+.*");
        Matcher m = p.matcher(content);
        if (m.matches()) {
            flag = true;
        }
        return flag;
    }
    // 判断一个字符串是否含有字母
    public static boolean judgeContainsStr(String str) {
        String regex=".*[a-zA-Z]+.*";
        Matcher m=Pattern.compile(regex).matcher(str);
        return m.matches();
    }

    // 判断一个字符串是否是字母
    public static boolean is_alpha(String str) {
        if(str==null) return false;
        return str.matches("[a-zA-Z]+");
    }



    //送达登记表文号 整合
    public  static List<String> detailReportCodeList(List<String> datas){


        List<String>  ddd=new ArrayList<String>();
        Map<String, List<String>> yearMap = new TreeMap<String, List<String>>(
                new Comparator<String>() {
                    public int compare(String obj1, String obj2) {
                        // 降序排序
                        return obj1.compareTo(obj2);
                    }
                });

        for (String code:datas){
            String year=code.split("-")[0];
            String number=code.split("-")[1];
            if (yearMap.containsKey(year)){
                List<String> before=yearMap.get(year);
                before.add(number);
                yearMap.put(year,before);
            }else{
                List<String> newList=new ArrayList<>();
                newList.add(number);
                yearMap.put(year,newList);
            }
        }

//遍历map中的键

        for (String key : yearMap.keySet()) {
            System.out.println("Key = " + key);
            List<String> keyList=yearMap.get(key);
            Collections.sort(keyList);

            System.out.println("size="+keyList.size());
            int startStr=0;
            int endStr=0;
            int startStrTwo=0;
            int endStrTwo=0;
            Boolean add=false;

            int lengNum=keyList.size();
            int i=1;
            for (String str: keyList) {
                System.out.println("srt="+str);
                endStrTwo=Integer.parseInt(str);

                if (key.equals("2021")){
                    System.out.println("2021");
                }
                //开始 0 初始赋值
                if (startStr==0){
                    startStr=Integer.parseInt(str);
                    endStr=Integer.parseInt(str);
                    //最后一个值
                    if (keyList.get(keyList.size()-1).equals(str)){
                        ddd.add("渝新监测鉴〔"+key+"〕"+numberSupplement(String.valueOf(Integer.parseInt(str)),4)+"号");
                    }

                }else{
                    // 初始后第二个数
                    if (endStr+1==Integer.parseInt(str)){
                        //如果和上一个数 连续 修改endStr 值
                        endStr=Integer.parseInt(str);
                        //如果是最后一个值直接添加数据
                        if (i==lengNum){
                            ddd.add("渝新监测鉴〔"+key+"〕"+numberSupplement(String.valueOf(startStr),4)+"-"+numberSupplement(String.valueOf(endStr),4)+"号");
                        }

                    }else{
                        // 当前数和上一个数没有连续上 判断是单个数 还是 下一个数的开始
                        if(startStr!=endStr){
                            // 上一个 存在连续数 直接保存连续数
                            ddd.add("渝新监测鉴〔"+key+"〕"+numberSupplement(String.valueOf(startStr),4)+"-"+numberSupplement(String.valueOf(endStr),4)+"号");

                        }

                        if (startStr==endStr&&startStr!=Integer.parseInt(str)){
                            ddd.add("渝新监测鉴〔"+key+"〕"+numberSupplement(String.valueOf(startStr),4)+"号");

                        }

                        // 开始和结束 是同一个 那么的话就是单个数
                        if(i==lengNum){
                            ddd.add("渝新监测鉴〔"+key+"〕"+numberSupplement(String.valueOf(Integer.parseInt(str)),4)+"号");
                            break;
                        }

                        if (i<lengNum&&Integer.parseInt(keyList.get(i-1))+1==Integer.parseInt(keyList.get(i))){
                            //判断 当前数值 和下个数字值是不是 连续的
                            startStr=Integer.parseInt(str);
                            endStr=Integer.parseInt(str);
                        }else{
                            ddd.add("渝新监测鉴〔"+key+"〕"+numberSupplement(String.valueOf(Integer.parseInt(str)),4)+"号");
                            startStr=0;
                            endStr=0;
                        }



                    }
                }
                i++;
            }
        }


        return  ddd;

    }




}
